/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package generadorabm;

import generadorcommun.CrearProyecto;
import generadorcommun.DataBase;
import generadorcommun.GuardarArchivo;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Martin
 */
public class Controladora {

    private static Controladora instance;
    private CreadoraClase creadoraClase = new CreadoraClase("");
    private OTablaAtributos atributos;
    private OTablaExtiende extiende;
    private OTablaImplementa implementa;
    private OTablaMetodo metodos;
    private OTablaParametrosMetodo parametrosMetodos;
    private String nombreProyecto = "";

    public String getNombreProyecto() {
        return nombreProyecto;
    }

    public void setNombreProyecto(String nombreProyecto) {
        this.nombreProyecto = nombreProyecto;

    }

    public OTablaParametrosMetodo getParametrosMetodos() {
        return parametrosMetodos;
    }

    public void setParametrosMetodos(OTablaParametrosMetodo parametrosMetodos) {
        this.parametrosMetodos = parametrosMetodos;
    }

    public OTablaMetodo getMetodos() {
        return metodos;
    }

    public void setMetodos(OTablaMetodo metodos) {
        this.metodos = metodos;
    }

    public OTablaImplementa getImplementa() {
        return implementa;
    }

    public void setImplemena(OTablaImplementa implementa) {
        this.implementa = implementa;
    }

    private Controladora() {
    }

    public static Controladora getInstance() {
        if (instance == null) {
            instance = new Controladora();
        }
        return instance;
    }

    public OTablaAtributos getAtributos() {
        return atributos;
    }

    public void setAtributos(OTablaAtributos atributos) {
        this.atributos = atributos;
    }

    public OTablaExtiende getExtiende() {
        return extiende;
    }

    public void setExtiende(OTablaExtiende extiende) {
        this.extiende = extiende;
    }

    public CreadoraClase getCreadoraClase() {
        return creadoraClase;
    }

    public void setCreadoraClase(CreadoraClase creadoraClase) {
        this.creadoraClase = creadoraClase;
    }

    public void crearProyecto() {
        try {
            CrearProyecto.getInstance().crearProyecto(nombreProyecto);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }

    }

    public void cargarConexion(String user, String pass, String url, String db) {
        try {
            DataBase.getInstance().setPass(pass);
            DataBase.getInstance().setUser(user);
            DataBase.getInstance().setUrl(url);
            DataBase.getInstance().setUrlDefault(url, db);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }

    }

    public List<String> leerArchivoClases() {
        try {
            File ruta = new File("RegistroClasesProyecto/" + Controladora.getInstance().getNombreProyecto() + ".txt");
            return GuardarArchivo.getInstance().leerTxt(ruta);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }

    }

    public List<String> leerArchivoTipos() {
        try {
            File ruta = new File("TXTGENERADOR/tipos_basicos.txt");
            return GuardarArchivo.getInstance().leerTxt(ruta);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }

    }

    public List<String> leerArchivoProyectos() {
        try {
            File ruta = new File("RegistroProyectos/proyectos.txt");
            return GuardarArchivo.getInstance().leerTxt(ruta);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }

    }
    
}
